package java_thinking.unit_19._19_10;

import java.util.Random;

/**
 * @Desc:   19.10.6 使用enum 的状态机
 *      1.枚举类型非常适合用来创建 状态机。一个状态机可以具有有限个特定的状态，它通常根据输入，从一个状态转移到下一个状态
 *        ，不过也可能存在 瞬时状态，而一旦任务执行结束，状态机就会立刻离开瞬时状态
 * @author: cww
 * @DateTime: 2019/5/24 17:08
 */

public enum Input {
    NICKEL(5), DIME(10), QUARTER(25), DOLLAR(100), TOOTHPASTE(200), CHIPS(75), SODA(100), SOAP(50),
    ABORT_TRANSACTION {
        public int amount() {
            throw new RuntimeException("ABORT.amount()");
        }
    },
    STOP {
        public int amount() {
            throw new RuntimeException("STOP.amount()");
        }
    };
    int value;
    Input(int value) {
        this.value = value;
    }
    Input() {
    }
    int amount() {
        return value;
    }
    static Random rand = new Random(47);
    public static Input randomSelecttion() {
        return values()[rand.nextInt(values().length - 1)];
    }
}
